Typical modern computer applications such as databases, virtual desktop infrastructure, and data analytics require a large main memory. As computer systems scale to perform more complex data and storage intensive applications, the needs for larger memory capacity increase proportionally.
Data errors may occur due to various environmental factors affecting the reliability of DRAM cells. A large number of memory errors may be still correctible via employing error codes but need longer access latency. More retiring pages may result in the reduction of the effective memory capacity. Depending on the implementation, the reduced memory capacity caused by data errors may be regained after hardware reset.
While dynamic random access memory (DRAM) technology scales aggressively beyond 20 nm process technology to meet such increasing needs for memory capacity, system-level techniques such as inline compression or deduplication, and error-correction are applied to increase a virtual memory capacity of the system memory by as much as 2-3 times a physical memory capacity of the system memory.
Transcendent memory refers to a class of memory in the Linux kernel that is of unknown and dynamically variable size. The transcendent memory is addressable only indirectly by the Linux kernel, configured either as a persistent memory or as an ephemeral memory. The ephemeral memory indicates that the memory is temporarily available, but disappears without warning. The transcendent memory is still fast enough to be synchronously accessible.
A transcendent memory space is separated from the Linux kernel without enumeration by a memory management unit (MMU) as in some software-based implementations such as zswap. Zswap is a Linux kernel feature providing a compressed write-back cache for swapped pages. Instead of moving memory pages to a swap device such as a solid-state drive (SSD) or a hard disk drive (HDD) when the memory pages are to be swapped out, zswap performs the compression and stores the compressed cache into a memory pool that is dynamically allocated inside the system's memory.
A transcendent memory can provide a variable virtual memory capacity to a host computer over a DRAM channel. The variable virtual memory capacity of a transcendent memory can be exposed to the host computer as a system swap through a block input/output (I/O) layer of an OS kernel. A transcendent memory should be integrated into an existing system accounting for not only the latency requirements of the DRAM channel but also the performance benefits of the DRAM or other memory technologies that the system offers.